// cursorctrl.c
#include "video.h"
#include "cursorctrl.h"
#include "ports.h"
void cursorfda(int count)
{
  mvcursorabs(count);
}
void cursorfd()
{
  mvcursorabs(1);
}
void cursorbka(int count)
{
  mvcursorabs(-count);
}
void cursorbk()
{
  mvcursorabs(-1);
}
void cursorupa(int count)
{
  mvcursorxy(count, 0);
}
void cursorup()
{
  mvcursorxy(1, 0);
}
void cursordna(int count)
{
  mvcursorxy(-count, 0);
}
void cursordn()
{
  mvcursorxy(-1, 0);
}
void mvcursorxy(int x, int y)
{
  locx += x;
  locy += y;
  updateabs();
}
void mvcursorabs(int dist)
{
  loc += dist;
  updatexy();
}
void updatexy()
{
  locy = loc % WIDTH;
  locx = (loc - locy) / WIDTH;
  updatemem();
}
void updateabs()
{
  loc = WIDTH * locx + locy;
  updatemem();
}
void updatemem()
{
  outb(0x3D4, 14);
  outb(0x3D5, loc >> 8);
  outb(0x3D4, 15);
  outb(0x3D5, loc);
}